home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-0071 / compress / ca_unpac.lst < prev    next >
File List  |  1997-04-16  |  2KB  |  73 lines

  1. '
  2. '
  3. ' CRACK ART 'CA_UNPACK'
  4. '
  5. ' Dekompressionsroutine für CA?-Bilder
  6. '
  7. ' © Detlef Röttger & Jan Borchers 1989-91
  8. '
  9. '
  10. INLINE ca_unpack%,288
  11. '
  12. resolution&=XBIOS(4)                            ! Auflösung holen
  13. IF resolution&>2                                ! keine ST-Auflösung
  14.   END
  15. ENDIF
  16. '
  17. DO
  18.   fpath$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\*.CA"+CHR$(resolution&+49)
  19.   FILESELECT #"LOAD CA",fpath$,"",fname$        ! File auswählen
  20.   CLS
  21.   IF EXIST(fname$)=FALSE                        ! File nicht existent oder Abbruch
  22.     END
  23.   ENDIF
  24.   '
  25.   RESERVE 64000
  26.   '
  27.   OPEN "I",#1,fname$                            ! File öffnen
  28.   buffer%=MALLOC(LOF(#1))                       ! Buffer reservieren
  29.   CLOSE #1
  30.   '
  31.   IF buffer%<>0
  32.     BLOAD fname$,buffer%                        ! Bild laden
  33.     '
  34.     IF DPEEK(buffer%)<>&H4341                   ! 'CA'-Kennung checken
  35.       PRINT "Kein CA-Bild! (Abbruch)"
  36.     ELSE
  37.       IF PEEK(buffer%+3)<>resolution&           ! Auflösung checken
  38.         PRINT "Falsche Auflösung! (Abbruch)"
  39.       ELSE
  40.         '
  41.         SELECT resolution&
  42.         CASE 0                                          ! Low Res
  43.           ~XBIOS(6,L:buffer%+4)                           ! Farben setzen
  44.           offset%=36                                    ! Image-Beginn
  45.         CASE 1                                          ! Med Res
  46.           ~XBIOS(6,L:buffer%+4)
  47.           offset%=12
  48.         CASE 2                                          ! High Res
  49.           ' Monochrombilder besitzen keine Farbpalette
  50.           offset%=4
  51.         ENDSELECT
  52.         '
  53.         HIDEM
  54.         IF PEEK(buffer%+2)=0                            ! Bild ungepackt
  55.           BMOVE buffer%+offset%,XBIOS(2),32000
  56.         ELSE                                            ! Bild gepackt
  57.           ~C:ca_unpack%(L:buffer%+offset%,L:XBIOS(2))   ! Image Auspacken
  58.         ENDIF
  59.         SHOWM
  60.         '
  61.       ENDIF
  62.     ENDIF
  63.     '
  64.     ~MFREE(buffer%)                     ! Speicher wieder freigeben
  65.   ENDIF
  66.   RESERVE
  67.   '
  68.   WHILE MOUSEK
  69.   WEND
  70.   REPEAT
  71.   UNTIL MOUSEK
  72. LOOP
  73.